<?php
/**
 * 模块: 角色管理
 * User: 文丹
 * Date: 2018/1/24
 * Time: 11:37
 */
namespace app\admin\model;
use think\Db;
use think\Model;
class Role extends Model{
    /**
     *  查询全部角色 - 分页
     * @return \think\Paginator
     */
    public function getRoles(){
        return Db::name('role')
              ->order('id desc')
              ->paginate(10)->each(function($item,$key){
                 $arr = json_decode($item['menu_config'],true);
                if($arr){
                    $item['arr']=$arr;
                    foreach($arr as $k=>$v){
                        if(isset($v['menu_id'])){
                            $item['menu'][$k]['menuName'] = Db::name('menu')->where('id','in',$v['menu_id'])->field('name')->select();
                        }
                        if(isset($v['item_id'])){
                            $item['menu'][$k]['itemName']= Db::name('item')->where('id','in',$v['item_id'])->field('item_name')->find();
                        }

                    }
                }else{
                    $item['arr'] = [];
                }

             return $item;
        });
    }
    public function count(){
        return Db::name('role')->count();
    }

    /**
     * 添加角色
     * @param $data
     * @return int|string
     */
    public function roleSave($data){
        return Db::name('role')->insert($data);
    }

    /**
     *  查询单个 - 角色
     * @param $id
     * @return array|false|mixed|\PDOStatement|string|Model
     */
    public function getRole($id){
        return Db::name('role')->where('id',$id)->find();
    }

    /**
     * 角色 - 停用
     * @param $id
     * @return int|string
     */
    public function roleStop($id){
        return Db::name('role')->where('id',$id)->update(['state'=>0]);
    }

    /**
     * 角色 - 启用
     * @param $id
     * @return int|string
     */
    public function roleStart($id){
        return Db::name('role')->where('id',$id)->update(['state'=>1]);
    }

    /**
     *  角色 - 删除
     * @param $id
     * @return int
     */
    public function roleDel($id){
        return Db::name('role')->where('id',$id)->delete();
    }
    /**
     *  角色 - 搜索
     */
    public function roleSearch($name){
        return Db::name('role')->where('name',$name)->paginate(5);
    }
    /**
     *  查询全部角色
     */
    public function selectRoles(){
        return Db::name('role')->select();
    }
    public function roleUpdate($data,$role_id){
        return Db::name('role')->where('id',$role_id)->update($data);
    }

    /**
     *  查询 角色名
     * @param $role_id
     * @return mixed
     */
    public function getRoleName($role_id){
        return Db::name('role')->where('id',$role_id)->value('name');
    }

    /**
     *  按角色名称 - 搜索
     * @param $role_name
     * @return $this
     */
    public function roleNameSearch($role_name){
        return Db::name('role')
            ->where('name','like','%'.$role_name.'%')
            ->paginate(5)->each(function($item,$key){
            $arr = json_decode($item['menu_config'],true);
            // $item['menu_config'] = $arr;
           // $item['item_name'] = Db::name('item')->where(['id'=>['in',$arr['item_id']]] )->field('item_name')->select();
            $item['menuName'] = Db::name('menu')->where(['id'=>['in',$arr['menu_id']]])->field('name')->select();
            return $item;
        });

    }
    public function roleNameCount($role_name){
        return Db::name('role')->where('name','like','%'.$role_name.'%')->count();

    }
    public function getName($roleID){
        return Db::name('role')->where('id',$roleID)->value('name');
    }
}